/*
 * MarcoPrincipal.java
 *
 * Created on 2 de octubre de 2008, 17:47
 */
package svgbrowser;

import java.awt.Component;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.TreePath;

/**
 *
 * @author  jbp
 */
public class MarcoPrincipal extends javax.swing.JFrame {

    /** Creates new form MarcoPrincipal */
    public MarcoPrincipal() {
        initComponents();
                
        setIconImage(new ImageIcon(this.getClass().getResource("svg.png")).getImage());

        arbolArchivos.setModel(new ArchivoTreeModel(new ArchivoFile(new File("D:\\"))));
        arbolArchivos.getSelectionModel().addTreeSelectionListener(new TreeSelectionListener() {

            public void valueChanged(TreeSelectionEvent e) {
                TreePath path = arbolArchivos.getSelectionPath();
                if (path != null) {
                    Archivo a = (Archivo) path.getLastPathComponent();
                    mostrarArchivo(a);
                }
            }
        });
    }

    private void mostrarArchivo(Archivo a) {
        

        if (a.esCarpeta()) {
            JPanel panel = new JPanel();

            EscaqueLayout layout = new EscaqueLayout();
            layout.setAltoCelda(100);
            layout.setAnchoCelda(100);
            layout.setMargen(20);
            panel.setLayout(layout);

            List<Actualizable> listaActualizables = new ArrayList<Actualizable>();
            for (int i = 0; i < a.getNumeroHijos(); i++) {
                String nombreArchivo = a.getHijo(i).getNombreCompleto().toLowerCase();
                if (nombreArchivo.endsWith(".svg")) {
                    ComponenteMiniatura miniatura = new ComponenteMiniatura();
                    miniatura.setNombreArchivo(nombreArchivo);
                    panel.add(miniatura);
                    listaActualizables.add(miniatura);
                }
            }
            scroll.setViewportView(panel);
            
            ProcesoActualizador actualizador = new ProcesoActualizador(listaActualizables);        
            actualizador.ejecutar();
        
        } else if (a.esArchivo()) {
            FactoriaVisorSVG factoria = new FactoriaVisorSVG(a.getNombreCompleto());
            Component componente = factoria.getComponente();
            if (componente != null) {
                scroll.setViewportView(componente);
            }
        }
        
        
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        split = new javax.swing.JSplitPane();
        jScrollPane1 = new javax.swing.JScrollPane();
        arbolArchivos = new javax.swing.JTree();
        scroll = new javax.swing.JScrollPane();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Svg Browser");
        setMinimumSize(new java.awt.Dimension(50, 50));

        split.setDividerLocation(300);
        split.setPreferredSize(new java.awt.Dimension(800, 600));

        jScrollPane1.setViewportView(arbolArchivos);

        split.setLeftComponent(jScrollPane1);
        split.setRightComponent(scroll);

        getContentPane().add(split, java.awt.BorderLayout.CENTER);

        pack();
    }// </editor-fold>//GEN-END:initComponents

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        } catch (Exception e) {
            e.printStackTrace();
        }
        
        java.awt.EventQueue.invokeLater(new  

              Runnable() {
                 public void run() {
                new MarcoPrincipal().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JTree arbolArchivos;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane scroll;
    private javax.swing.JSplitPane split;
    // End of variables declaration//GEN-END:variables
}
